#
# "raw" modem - phoneline
#

pcm.!phoneline {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_MODEM_CARD
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.modem.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_MODEM_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.modem.device
			}
		}
	}
	@func refer
	name {
		@func concat
		strings [
			"cards."
			{
				@func card_driver
				card $CARD
			}
			".pcm.modem." $DEV ":CARD=" $CARD
		]
	}
}

#
#  "autohooked" modem
#

pcm.!modem {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_MODEM_CARD
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.modem.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_MODEM_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.modem.device
			}
		}
	}
	type hooks
	slave {
		pcm {
			@func concat
			strings [
				"cards.pcm.phoneline:CARD=" $CARD ",DEV=" $DEV
			]
		}
	}
	hooks.0 {
		type ctl_elems
		hook_args [
		{
			name "Off-hook Switch"
			preserve true
			value "on"
			lock false
			optional true
		}
		]
	}
}
